package cn.px.service.purchase;

import cn.px.common.bean.AbstractPageResultBean;
import cn.px.dao.dto.purchase.PurchaseOrderDTO;
import cn.px.dao.entity.purchase.PurchaseOrder;
import cn.px.dao.vo.query.purchase.PurchaseOrderVO;
import cn.px.service.base.IBaseService;

import java.util.List;

/**
 * @Description 采购单 service
 * @author 品讯科技
 * @date 2024-08
 * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
 */
public interface PurchaseOrderService extends IBaseService<PurchaseOrder, PurchaseOrderDTO> {

    /**
     * 批量删除
     *
     * @param ids ：
     * @return ：
     */
    int batchDelete(List<String> ids);

    /**
     * 分页查询
     *
     * @param record
     * @param pageNum
     * @param pageSize
     * @return
     */
    AbstractPageResultBean<PurchaseOrderVO> selectPageList(PurchaseOrderDTO record, int pageNum, int pageSize);
    /**
     * 询价
     *
     * @param record
     */
    void enquiry(PurchaseOrderDTO record);

    /**
     * 修改信息
     *
     * @param record
     */
    void updateInfo(PurchaseOrderDTO record);

    /**
     * 更新使用金额
     *
     * @param id
     */
    void updatePaidMoney(String id);

    /**
     * 更新报销金额
     *
     * @param id
     */
    void updateReimburseMoney(String id);

    /**
     * 更新重量和体积
     *
     * @param id
     */
    void updateWeightAndVolume(String id);

    /**
     * 更新已发运数量
     *
     * @param id
     */
    void updateDispatchedQuantity(String id);

    /**
     * 更新总金额 包含其他费用
     *
     * @param id
     */
    void updateTotalMoney(String id);

    /**
     * 确认更新入库数量
     *
     * @param record
     */
    void confirmUpdateQuantityForInStore(PurchaseOrderDTO record);

    /**
     * 确认总额
     *
     * @param record
     */
    void confirmMoney(PurchaseOrderDTO record);

    /**
     * 结束采购单
     *
     * @param id
     */
    void finishOrder(String id);

    /**
     * 审核
     *
     * @param record
     * @return
     */
    void audit(PurchaseOrderDTO record);

    void updateEnquiryAuditForTimer();
}
